<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>循环嵌套(loop nesting)</title>
    <!-- 
    在JavaScript中，循环嵌套（Loop Nesting）是指在一个循环内部再包含一个或多个循环。
    这种结构允许我们处理更复杂的数据结构，如多维数组或在特定条件下执行重复操作。

    1. 嵌套循环的基本结构
    嵌套循环的基本结构如下：
    for (let i = 0; i < outerLimit; i++) {
        // 外层循环的代码
        for (let j = 0; j < innerLimit; j++) {
            // 内层循环的代码
        }
    }
    
    2. 嵌套循环的示例
    以下是一个简单的嵌套循环示例，用于遍历二维数组：
    const matrix = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ];

    for (let i = 0; i < matrix.length; i++) {
        for (let j = 0; j < matrix[i].length; j++) {
            console.log(matrix[i][j]); // 输出每个元素
        }
    }

    3. 嵌套循环的性能
    - 时间复杂度：嵌套循环的时间复杂度通常是 O(n * m)，其中 n 是外层循环的迭代次数，m 是内层循环的迭代次数。因此，嵌套循环可能导致性能问题，尤其是在处理大数据集时。
    - 优化：在使用嵌套循环时，要注意优化算法，尽量减少不必要的计算。例如，可以考虑使用哈希表来存储中间结果，从而减少循环次数。

    4. 嵌套循环的应用场景
    - 多维数组：处理多维数组或矩阵时，嵌套循环是常用的方法。
    - 组合问题：在解决组合、排列问题时，嵌套循环可以生成所有可能的组合。
    - 图形处理：在图形处理和游戏开发中，嵌套循环常用于渲染二维或三维场景。

    5. 注意事项
    - 可读性：嵌套循环可能会使代码变得复杂和难以理解。适当的注释和代码结构可以提高可读性。
    - 避免过深的嵌套：过多层的嵌套可能导致代码难以维护，建议在可能的情况下将逻辑拆分为函数。

    总结
    循环嵌套是JavaScript中处理复杂数据结构和问题的重要工具。虽然它能提供强大的功能，但在使用时要注意性能和可读性。
    合理优化和拆分代码可以帮助提高代码的效率和可维护性。
      
     -->
  </head>
  <body>

    <script>
      // 嵌套循环的基本结构
      // for (let i = 0; i < outerLimit; i++) {
      //   // 外层循环的代码
      //   for (let j = 0; j <h3 innerLimit; j++) {
      //     // 内层循环的代码
      //   }
      // }
      document.write("<h3>1. 印九九乘法表</h3>");
      // 示例：打印九九乘法表
      for (let i = 1; i <= 9; i++) {
        console.log("一. 开始执行i = " + i);
        
        for (let j = 1; j <= i; j++) {
          console.log("二. 开始循环j = " + j);
          document.write(`${j} * ${i} = ${i * j} &nbsp;`);
        }
        document.write("<br>");
        console.log("三. 结束执行i = " + i);
      }

      document.write("<h3>2. 打印一个二维数组</h3>");
      // 示例：打印一个二维数组
      let matrix = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9],
      ];
      for (let i = 0; i < matrix.length; i++) {
        for (let j = 0; j < matrix[i].length; j++) {
          document.write(matrix[i][j] + " ");
        }
      }
    </script>

  </body>
</html>
